const formidable = require('formidable')
const path = require('path')
const { Article, validateArticle } = require('../../model/article');

module.exports = (req, res, next) => {
    // 创建表单解析对象
    const form = new formidable.IncomingForm();
    // 配置上传文件夹位置
    form.uploadDir = path.join(__dirname, '../', '../', 'public', 'uploads');
    // 保留上传文件的后缀（默认不带后缀）
    form.keepExtensions = true;
    // 解析表单
    form.parse(req, async (err, fileds, files) => {
        // err:错误对象  fields:对象类型，保存普通表单类型数据
        // files: 对象类型，保存和文件上传相关的数据
        try {
            // 这里没有验证cover， 要验证的话可以组合两个变量（fileds, files）
            await validateArticle(fileds);
        } catch (ex) {
            // 验证失败重定向到添加用户页面
            // return res.redirect(`/admin/user-edit?message=${ex.message}`);
            return next(JSON.stringify({
                path: '/admin/article-edit',
                message: ex.message
            }));
        }
        
        await Article.create({
            title: fileds.title,
            author: fileds.author,
            publishDate: fileds.publishDate,
            cover: files.cover && files.cover.path.split('public')[1],
            content: fileds.content
        });

        res.redirect('/admin/article')
    })
}